/**
 * Created by LiuDan on 2017/07/01.
 * 登陆.js
 */
;(function($){
    //公共方法
    $.commonJs={
        //取url里面参数
        getString:function(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
            var r = window.location.search.substr(1).match(reg);
            if (r != null) return decodeURIComponent(r[2]);
            return null;
        },

        //读取cookie
        getCookie:function(name) { //读取cookie
            var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
            if (arr != null) return unescape(arr[2]);
            return null;
        },
        //存储cookie
        setCookie:function(name,value,days){
            var exp=new Date();
            exp.setTime(exp.getTime() + days*24*60*60*1000);
            var arr=document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
            document.cookie=name+"="+escape(value)+";expires="+exp.toGMTString();
        },
        setPageLoading:function (boolShowing) {
            var loading='<div class="loadPageImg dn" id="loadPage"><img src="'+basePathOnline+'/home/img/loading.svg"/></div>'
            if( $('body').find('.loadPageImg').length==0){
                $('body').append(loading);
            }
            $('#loadPage')[boolShowing ? 'show' : 'hide']();
            return  this;
        },
        /*点击加载ajax状态
         参数说明 : obj:  当前点击对象
         text: 执行中文字说明
         bool: 执行状态  执行中传 true text为执行中的文字状态,执行结束传false text为执行后的状态
         */
        ajaxLoading:function(obj,text,bool){
            obj.html(text)
            if(bool){
                obj.addClass('loginenable')
            }else{
                obj.removeClass('loginenable')
            }
        },
        flag:false,
        isCliclLogin:false,
        //错误消息
        errorMessage:function(info){
            flag = false;
            var errorReg = /[a-zA-z]+/g;
            if (errorReg.test(info)) {
                $.commonJs.rTips("系统繁忙，请稍候再试!");
                return flag = true;
            }
        },
        //弱提示
        comPop: function (text) {
            var str = '<div class="layer layerOut"><p></p></div>'
            if ($('body').find('.layer').length<= 0) {
                $('body').append(str);
            }
            $('.layer').show();
            $('.layer p').html(text)
            setTimeout(function() {
                $('.layer').remove();
            },2000)
        },
        //tips
        rTips:function(tips){
            $(".rTips").text(tips);
            $(".rTips").css("display", "block");
            setTimeout(function () {
                $(".rTips").css("display", "none");
            }, 2000)
        },
        //错误提示
        errorStyle:function(){
            return {"border":"1px solid #ff4012"}
        },
        //输入框情空与显示
        clearInp:function(inp,errorTip){
            var inptext =inp.val();
            if (inptext == "") {
                errorTip.css("display", "none");
            } else {
                errorTip.css("display", "block");
            }
            return false;
        },
        //输入框获取焦点
        Inpfocus:function(inp,tips){
            tips.css("display", "none");
            inp.css("border", "1px solid #3492fd");
        }
    }
    //DOM 获取
    $.domEvt={
        /*-------------------------用户名登陆 DOM获取--------------------------------------*/
        logUserInput:$(".login-content .userName"), //用户名 input
        logPassInput:$(".login-content .password"), //密码 input
        cymyLogin : $(".usernameBox .userNameHit"), //用户名 提示
        cymyLoginInfo : $(".usernameBox .HitWord"), //用户名 提示文字
        cymyPass :$(".passwordBox .passwordHit"),   //密码 提示
        cymyPassInfo: $(".passwordBox .HitWord"),	//密码 提示文字

        /*----------------------------手机验证码登陆DOM获取-----------------------------------*/
        phoneInput:$('.registerUsernameBox .Rusername'), //手机号input
        phoneLogin:$('.registerUsernameBox .RuserNameHit'),//手机号提示
        phoneLoginInfo:$(".registerUsernameBox .HitWord"), //手机号 提示文字

        imgCodeInp:$('.imgVertifyCode .imgVertify'), //图形码 input
        imgLogin:  $('.imgVertifyCode .RverificationCodeHit'), //图形码 提示
        imgLoginInfo:  $('.imgVertifyCode .HitWord'),//图形码 提示文字

        verCodeInput:$('.verification-code .verifCode'),//验证码 input
        verLogin:$('.verification-code .RverificationCodeHit'),//验证码 提示
        verLoginInfo:$('.verification-code .HitWord'),//验证码 提示文字
        verLoginBtn: $('.verification-code .btn-getcode'),//获取验证码btn

    }
    //表单验证
    $.registerEvt={
        regPhone:function(tel){
            var regPhone=/^1[3-578]\d{9}$/;
            if(regPhone.test(tel)){
                return true;
            }else{
                return false;
            }
        },
        regEmail:function(eml){
            var regEmail=/^\w+([-+.]\w+)*@\w+([-.]\w{2,})*\.\w{2,}([-.]\w{2,})*$/;
            if(regEmail.test(eml)){
                return true;
            }else{
                return false;
            }
        },
        //用户名验证
        userNameReg:function(){
            if ($.domEvt.logUserInput.val().trim().length === 0) {
                $.domEvt.logUserInput.css($.commonJs.errorStyle());
                $.domEvt.cymyLoginInfo.text("请输入手机号或邮箱!");
                $.domEvt.cymyLogin.show();
                return false
            } else if ($.domEvt.logUserInput.val().trim().indexOf("@") == "-1" && $.registerEvt.regPhone($.domEvt.logUserInput.val().trim())==false) {
                $.domEvt.logUserInput.css($.commonJs.errorStyle());
                $.domEvt.cymyLoginInfo.text("手机号格式不正确!");
                $.domEvt.cymyLogin.css("display", "block");
                return false
            } else if ($.domEvt.logUserInput.val().trim().indexOf("@") != "-1" && $.registerEvt.regEmail($.domEvt.logUserInput.val().trim())==false) {
                $.domEvt.logUserInput.css($.commonJs.errorStyle());
                $.domEvt.cymyLoginInfo.text("邮箱格式不正确!");
                $.domEvt.cymyLogin.css("display", "block");
                return false
            } else {
                $.domEvt.logUserInput.css("border", "");
                return true
            }
        },
        //密码验证
        passWordReg:function(){
            var cyinput2Length=$.domEvt.logPassInput.val().trim().length;
            if (cyinput2Length== 0) {
                $.domEvt.logPassInput.css($.commonJs.errorStyle());
                $.domEvt.cymyPassInfo.text("请输入6-18位密码!");
                $.domEvt.cymyPass.css("display", "block");
                return false
            }else if(cyinput2Length < 6 || cyinput2Length > 18){
                $.domEvt.logPassInput.css($.commonJs.errorStyle());
                $.domEvt.cymyPassInfo.text("请输入6-18位密码!");
                $.domEvt.cymyPass.css("display", "block");
                return false
            }else{
                $.domEvt.logPassInput.css("border", "");
                return true
            }
        },
        //手机号验证
        phoneReg:function(){
            var phoneTxt=$.domEvt.phoneInput.val().trim();
            if(phoneTxt.length==0){
                $.domEvt.phoneInput.css($.commonJs.errorStyle());
                $.domEvt.phoneLoginInfo.text("请输入手机号!");
                $.domEvt.phoneLogin.show();
                return false
            }else if($.registerEvt.regPhone(phoneTxt)==false){
                $.domEvt.phoneInput.css($.commonJs.errorStyle());
                $.domEvt.phoneLoginInfo.text("手机格式不正确!");
                $.domEvt.phoneLogin.show();
                return false
            }else{
                $.domEvt.phoneInput.css("border", "");
                return true
            }
        },
        //图形验证码
        imgCodeReg:function(){
            var codeLen=$.domEvt.imgCodeInp.val().trim().length;
            if(codeLen==0){
                $.domEvt.imgCodeInp.css($.commonJs.errorStyle());
                $.domEvt.imgLoginInfo.text('请输入图形验证码!');
                $.domEvt.imgLogin.show();
                return false;
            }else{
                $.domEvt.imgCodeInp.css("border", "");
                return true
            }
        },
        //动态验证码验证
        cymCodeInfo:function(){
            var cymCodeLen=$.domEvt.verCodeInput.val().trim().length;
            if(cymCodeLen==0){
                $.domEvt.verCodeInput.css($.commonJs.errorStyle());
                $.domEvt.verLoginInfo.text('请输入动态验证码!');
                $.domEvt.verLogin.show();
                return false;
            }else if(cymCodeLen < 4){
                $.domEvt.verCodeInput.css($.commonJs.errorStyle());
                $.domEvt.verLoginInfo.text('请输入4位动态验证码!');
                $.domEvt.verLogin.show();
                return false;
            }else{
                $.domEvt.verCodeInput.css("border", "");
                return true
            }
        }

    }
    //逻辑处理
    $.validate={
        //用户名登陆 接口
        login:function(obj,data, autoLogin){console.log(data);
            $.ajax({
                type:"POST",
                url:"/home/public/checkLogin",
                async:true,
                data:data,
                xhrFields: {
                    withCredentials: true
                },
                crossDomain: true,
                success:function(result){
                    if (result.success) {
                        var referUrl=$.commonJs.getString('refer')?decodeURIComponent($.commonJs.getString('refer')):'';
                        window.localStorage.userName=data.username;
                        if(window.location.href.indexOf('login')==-1){
                            window.location.reload();
                        }else{
                            if(referUrl){
                                window.location.href=referUrl
                            }else{
                                location.href = basePathOnline;
                            }
                        }
                        var myStudent=window.localStorage.myStudyCenter;
                        var myFeedback=window.localStorage.myFeedback;
                        if(myStudent==1){
                            window.location.href=basePathOnline+"/web/html/myStudyCenter.html";
                            window.localStorage.myStudyCenter=null;
                        }
                        if(myFeedback==1){
                            window.location.href=basePathOnline+"/web/html/personcenter.html";
                            window.localStorage.myFeedback=null;
                        }
                        if(getQueryString('src')==='bbs'){
                            $("#hidden_frame").attr("src","../../bbsLogin.jsp");
                            //延迟执行一下以保证iframe执行了
                            setTimeout(function () {
                                location.href = basePathBlog;//跳转到bbs首页
                            }, 1000);
                        }
                    } else { //登陆错误提示
                        $.commonJs.ajaxLoading(obj,'登录',false)
                        $(".loginGroup .logout").css("display", "block");
                        if(result.errorMessage=="用户名或密码错误"){
                            $.domEvt.logPassInput.css($.commonJs.errorStyle());
                            $.domEvt.cymyPassInfo.text("用户名或密码错误!");
                            $.domEvt.cymyPass.show();
                        }else if(result.errorMessage=="此用户未注册"){
                            $.domEvt.logUserInput.css($.commonJs.errorStyle());
                            $.domEvt.cymyLoginInfo.text('此用户未注册!');
                            $.domEvt.cymyLogin.show();
                        }else if(!result.errorMessage){
                            $.commonJs.comPop('系统繁忙,请稍后再试~')
                        }else{
                            $.commonJs.comPop(result.errorMessage)
                        }

                    }
                },
                error:function(){
                    $.commonJs.comPop('系统繁忙,请稍后再试~')
                }
            });
        },
        //手机动态码登陆 接口
        loginCode:function(obj,data, autoLogin){
            $.ajax({
                type:"post",
                url:basePathOnline+"/online/user/loginByCode",
                async:true,
                data:data,
                xhrFields: {
                    withCredentials: true
                },
                crossDomain: true,
                success:function(result){
                    if (result.success) {
                        window.localStorage.userName=data.username;
                        var referUrl=$.commonJs.getString('refer')?decodeURIComponent($.commonJs.getString('refer')):'';
                        if(window.location.href.indexOf('login')==-1){
                            window.location.reload();
                        }else{
                            if(referUrl){
                                window.location.href=referUrl
                            }else{
                                location.href = basePathOnline+"/index.html";
                            }

                        }
                        var myStudent=window.localStorage.myStudyCenter;
                        var myFeedback=window.localStorage.myFeedback;
                        if(myStudent==1){
                            window.location.href=basePathOnline+"/web/html/myStudyCenter.html";
                            window.localStorage.myStudyCenter=null;
                        }
                        if(myFeedback==1){
                            window.location.href=basePathOnline+"/web/html/personcenter.html";
                            window.localStorage.myFeedback=null;
                        }
                        if(getQueryString('src')==='bbs'){
                            $("#hidden_frame").attr("src","../../bbsLogin.jsp");
                            //延迟执行一下以保证iframe执行了
                            setTimeout(function () {
                                location.href = basePathBlog;//跳转到bbs首页
                            }, 1000);
                        }
                    } else { //登陆错误提示
                        $.commonJs.ajaxLoading(obj,'登录',false);
                        if(result.errorMessage=="动态验证码错误1" || result.errorMessage=="动态验证码错误2"){
                            $.domEvt.verCodeInput.css($.commonJs.errorStyle());
                            $.domEvt.verLoginInfo.text('动态码错误！');
                            $.domEvt.verLogin.show();
                        }else if(result.errorMessage=="图形验证码不合法或无效"){
                            $.domEvt.imgCodeInp.css($.commonJs.errorStyle());
                            $.domEvt.imgLoginInfo.text('验证码错误!');
                            $.domEvt.imgLogin.show();
                        }else if(!result.errorMessage){
                            $.commonJs.comPop('系统繁忙,请稍后再试~');
                        }else{
                            $.commonJs.comPop(result.errorMessage);
                        }

                    }
                },
                error:function(result){
                    $.commonJs.comPop('系统繁忙,请稍后再试~');
                    $.commonJs.ajaxLoading(obj,'登录',false)
                }
            });
        },
        //绑定事件
        bindevent:function(){
            /*--------------------用户名登录相关----------------------------*/
            /*登录注册切换*/
            $(".login-register div").click(function () {
                $(this).addClass("select").siblings().removeClass("select");
                if($(this).hasClass('login-button')){
                    $(".login-content").show();
                    $(".register-content").hide();
                }else if($(this).hasClass('register-button')){
                    $(".login-content").hide();
                    $(".register-content").show();
                }
            });
            //记住密码选中
            var rememberUser=false //默认不记住密码;
            var rememberPhone=false//默认不记住手机号;
            var phoneNum=sessionStorage.getItem('phoneNumber')?sessionStorage.getItem('phoneNumber'):'';
            var fromUrl=document.referrer.toLowerCase();
            if(fromUrl.indexOf('register')!=-1){
                $.domEvt.logUserInput.val(phoneNum);
            }
            //忘记密码
            $('.forgetPassword').click(function(){
                var referUrl=window.location.href;
                if(referUrl.indexOf('login')==-1){
                    window.location.href=basePathOnline+'/web/html/resetPassword.html?refer='+encodeURIComponent(encodeURI(referUrl));
                }else{
                    window.location.href=basePathOnline+'/web/html/resetPassword.html';
                }
            })
            $(".autoLoginSelect,.autoLogin").click(function () {
                $('.autoLoginSelect').toggleClass("select").siblings().removeClass("select");
                rememberUser=$('.autoLoginSelect').hasClass('select')?true:false;
            });
            $(".allowProtocal,.rememberPhone").click(function () {
                $('.allowProtocal').toggleClass("select").siblings().removeClass("select");
                rememberPhone=$('.allowProtocal').hasClass('select')?true:false;
            });
            //输入框 清空事件
            $.domEvt.logUserInput.on("input", function () {
                $.commonJs.clearInp($.domEvt.logUserInput,$(".userNameClose"))
            });
            $.domEvt.logPassInput.on("input", function () {
                $.commonJs.clearInp($.domEvt.logPassInput,$(".passwordClose"))
            });
            $(".userNameClose").click(function () {
                $.domEvt.logUserInput.val("");
                $.domEvt.logUserInput.css({"border": "1px solid #3492fd"});
                $(this).hide()
            });
            $(".passwordClose").click(function () {
                $.domEvt.logPassInput.val("");
                $.domEvt.logPassInput.css({"border": "1px solid #3492fd"});
                $(this).hide()
            });
            /*按回车键进行登录*/
            $(".login-content .userName,.login-content .password").bind("keyup", function (evt) {
                if (evt.keyCode == "13") {
                    $(".goLogin").trigger("click");
                }
            });
            //输入框 获取焦点
            $.domEvt.logUserInput.focus(function () {
                $.commonJs.Inpfocus($(this),$.domEvt.cymyLogin)
            });
            $.domEvt.logPassInput.focus(function () {
                $.commonJs.Inpfocus($(this),$.domEvt.cymyPass)
            });
            //用户名 失去焦点
            $.domEvt.logUserInput.blur(function(){
                $.registerEvt.userNameReg();
            });
            $.domEvt.logPassInput.blur(function(){
                $.registerEvt.passWordReg();
            });
            //登陆 事件
            $(".goLogin").click(function(){
                var _this=$(this)
                $.domEvt.cymyLogin.hide()
                var data={
                    mobile: $.domEvt.logUserInput.val().trim(),
                    password: $.domEvt.logPassInput.val(),
                    rememberme:rememberUser,
                    _token:$("input[name='_token']").val()
                }
                if(!$.registerEvt.userNameReg()){
                    return;
                }else if(!$.registerEvt.passWordReg()){
                    return;
                }else{
                    $.commonJs.ajaxLoading(_this,'登录中..',true)
                    $.commonJs.isCliclLogin = true;
                    $.validate.login(_this,data)

                }
            })
            /*------------------------手机号登陆相关--------------------------*/
            var cookiePhoneNum=$.commonJs.getCookie('_mobile_Phone')?$.commonJs.getCookie('_mobile_Phone'):'';
            $.domEvt.phoneInput.val(cookiePhoneNum);  //查询cookie中是否记住手机号
            //点击切换图形验证码
            $(".imgVertifyCode img").on("click",function(){
                var a=Math.random();
                $(this).attr("src",basePathOnline+"/captcha/default?t="+a+"");
            });
            //输入框 获取焦点
            $.domEvt.phoneInput.focus(function () {
                $.commonJs.Inpfocus($(this),$.domEvt.phoneLogin)
            });
            $.domEvt.imgCodeInp.focus(function () {
                $.commonJs.Inpfocus($(this),$.domEvt.imgLogin)
            });
            $.domEvt.verCodeInput.focus(function () {
                $.commonJs.Inpfocus($(this),$.domEvt.verLogin)
            });
            //输入框 清空事件
            $.domEvt.phoneInput.on("input", function () {
                $.commonJs.clearInp($.domEvt.phoneInput,$(".RusernameClose"))
            });
            $(".RusernameClose").click(function () {
                $.domEvt.phoneInput.val("");
                $.domEvt.phoneInput.css({"border": "1px solid #3492fd"});
                $(this).hide()
            });
            //手机号 失去焦点
            $.domEvt.phoneInput.blur(function(){
                $.registerEvt.phoneReg();
            });
            //图形验证码
            $.domEvt.imgCodeInp.blur(function () {
                $.registerEvt.imgCodeReg()
            });
            $.domEvt.verCodeInput.blur(function () {
                $.registerEvt.cymCodeInfo()
            });
            //获取验证码
            $(".btn-getcode").click(function(){

                var _this=$(this)
                var tel = $.domEvt.phoneInput.val().trim();
                var imgcode=$.domEvt.imgCodeInp.val().trim();
                var _token = $("input[name='_token']").val();
                var data = {phone: tel, vtype:1,captcha:imgcode,_token:_token};
                if(!$.registerEvt.phoneReg()){
                    return;
                }else if(!$.registerEvt.imgCodeReg()){
                    return;
                }else{
                    _this.addClass('enable')
                    $.ajax({
                        type:"POST",
                        url:basePathOnline+"/online/verificationCode/sendmessage",
                        data:data,
                        async:true,
                        xhrFields: {
                            withCredentials: true
                        },
                        crossDomain: true,
                        success:function(result){
                            if(result.success){
                                var second = 90;
                                var oldval = _this.val();
                                var timer = setInterval(function () {
                                    _this.text(second-- + "s");
                                    _this.addClass("enable");
                                    if (second === 0 || _this.val() != oldval) {
                                        second = 0;
                                        _this.removeClass("enable");
                                        _this.text("获取动态码");
                                        clearInterval(timer);
                                    }
                                }, 1000)
                            }else{
                                _this.removeClass("enable");
                                if(!result.errorMessage){
                                    $.commonJs.comPop('系统繁忙,请稍后再试~')
                                }else{
                                    var errorTxt=result.errorMessage;
                                    if(errorTxt=="同一手机号两次发送间隔至少90秒！"){  //此处判断 不严谨  后台最好给返回状态码
                                        $.domEvt.phoneInput.css($.commonJs.errorStyle());
                                        $.domEvt.phoneLoginInfo.text(result.errorMessage);
                                        $.domEvt.phoneLogin.show();
                                    }else if(errorTxt.indexOf('手机号')!=-1&&errorTxt!='同一手机号两次发送间隔至少90秒！'){
                                        $.domEvt.phoneInput.css($.commonJs.errorStyle());
                                        $.domEvt.phoneLoginInfo.text(result.errorMessage);
                                        $.domEvt.phoneLogin.show();
                                    }else if(errorTxt.indexOf('验证码')!=-1){
                                        $.domEvt.imgCodeInp.css($.commonJs.errorStyle());
                                        $.domEvt.imgLoginInfo.text(result.errorMessage);
                                        $.domEvt.imgLogin.show();
                                    }else{
                                        $.commonJs.comPop(errorTxt)
                                    }

                                }
                            }
                        },
                        error:function(result){
                            $.commonJs.comPop('系统繁忙,请稍后再试~');
                            _this.removeClass("enable");
                        }
                    })
                }
            })
            //登陆 事件
            $(".goLoginCode").click(function(){
                var _this=$(this)
                if(rememberPhone){
                    $.commonJs.setCookie('_mobile_Phone',$.domEvt.phoneInput.val())
                }else{
                    $.commonJs.setCookie('_mobile_Phone','')
                }
                var data={
                    username: $.domEvt.phoneInput.val().trim(),
                    vcode: $.domEvt.imgCodeInp.val(),
                    code:$.domEvt.verCodeInput.val(),
                    rememberme:rememberPhone,
                    _token:$("input[name='_token']").val()
                }
                if(!$.registerEvt.phoneReg()){
                    return;
                }else if(!$.registerEvt.imgCodeReg()){
                    return;
                }else if(!$.registerEvt.cymCodeInfo()){
                    return;
                }else{
                    $.commonJs.ajaxLoading(_this,'登录中..',true)
                    $.commonJs.isCliclLogin = true;
                    $.validate.loginCode(_this,data)
                }
            })
        },
        //事件触发
        init:function(){
            $.validate.bindevent();
        }
    }
    //入口
    $.validate.init()
})(jQuery)